This disclosure relates generally to graphics processing. More particularly, but not by way of limitation, this disclosure relates to the development and implementation of a tessellation shading stage that utilizes tessellation edge shaders.
Computers and other computing systems typically have at least one programmable processing element that is generally known as a central processing unit (CPU) and other programmable processors that are used for specialized processing of various types, such as graphics processing operations. Programmable processors specialized to perform graphics processing operations are typically called graphics processing units (GPUs). GPUs generally comprise multiple cores or processing elements designed to execute the same instruction on parallel data streams, making them more effective than general-purpose CPUs for operations that process large blocks of data in parallel. In general, a CPU functions as a host and hands-off specialized parallel tasks to the GPUs. For instance, a CPU may execute an application stored in system memory that includes viewable objects for display. Rather than processing the graphics data associated with the viewable objects, the CPU may forward the graphics data to the GPU for graphics processing.
To perform graphics processing, GPUs commonly use programs called shader programs or shaders. Common examples of shaders, include but are not limited to, pixel shaders, vertex shaders, geometry shaders, and tessellation shaders. Regarding tessellation shaders, modern graphics application program interfaces (APIs), such as OPENGL and DIRECT3D contain a tessellation shading stage that transforms abstracted patches into geometric primitives (OPENGL is a registered trademark of the Silicon Graphics, Inc. DIRECT3D is a registered trademark of the Microsoft Corporation). One possible issue with current tessellation shading stages involves cracking, which refers to the creation of gaps between adjacent patches at patch boundaries. The lack of continuity between patches from cracking may degrade image quality and cause visual artifacts on an object's surface. As such, improving the tessellation shading stage to account for cracking may be beneficial for the graphics rendering process.